package com.xbongbong.saas.domain.dao;

import com.xbongbong.paas.toolbox.exception.XbbException;
import com.xbongbong.pro.domain.entity.UpdateDataEntity;
import com.xbongbong.saas.domain.entity.FundAccountFlowEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * 资金账户流水DAO
 *
 * @author 徐俊杰
 * @date 2020/3/17 11:20
 * @since v1.0
 */
@Repository
@Mapper
public interface FundAccountFlowDao {

    /**
     * 新增资金账户流水
     * @param entity 新增参数
     * @return 是否成功
     */
    Integer insert(FundAccountFlowEntity entity);

    /**
     * 更新资金账户流水
     * @param entity 新增参数
     * @return 是否成功
     */
    Integer update(FundAccountFlowEntity entity);

    /**
     * 根据map参数获取集合
     * @param param 入参
     * @return 结果集
     */
    List<FundAccountFlowEntity> findEntitys(@Param("param") Map<String, Object> param);

    /**
     * 批量更新
     * @param list 更新对象集合
     * @param corpid 公司ID
     * @author zhouwq
     * @return 成功标识
     * @date 2020/3/20 9:46
     */
    Integer updateBatch(@Param("list") List<FundAccountFlowEntity> list, @Param("corpid") String corpid);

    Integer insertBatch(@Param("list") List<FundAccountFlowEntity> list);

    Integer getEntitysCount(@Param("param") Map<String, Object> param);

    /**
     * 找到资金账户中重复的单据，为刷脚本使用
     *
     * @param fundParams
     * @return
     */
    List<FundAccountFlowEntity> findRepeatSheetList(@Param("param") Map<String, Object> fundParams);

    /**
     * 获取某种类型最近的一笔流水
     * @param corpid
     * @param date
     * @return
     */
    FundAccountFlowEntity getLatestFlowEntity(@Param("corpid") String corpid,@Param("sheetTime")Long date);

}
